#ifndef _BATTERY_BOARD_H_
#define _BATTERY_BOARD_H_

#include <config.h>
#include <stdbool.h>

#if ((_BOARD_TYPE_ != _V32_B_BOARD_) && ((_BOARD_TYPE_ & _DA01_BOARD_) != _DA01_BOARD_))
/* 定义相关功能管脚 */
#if _BOARD_TYPE_ == _V31_A_BOARD_
// 电池电压检测管脚
#define BATTERY_VOLTAGE_DETECTION_PIN                     GPIO_Pin_7
// 控制电压检测管脚
#define BATTERY_VOLTAGE_DETECTION_ENABLE_PIN              GPIO_Pin_15
// 电压检测ADC检测信道
#define BATTERY_VOLTAGE_DETECTION_CHANNEL                 CH_EXTIN_11

#elif _BOARD_TYPE_ == _V32_A_BOARD_
// 电池电压检测管脚
#define BATTERY_VOLTAGE_DETECTION_PIN                     GPIO_Pin_6
// 控制电压检测管脚
#define BATTERY_VOLTAGE_DETECTION_ENABLE_PIN              GPIO_Pin_0
// 电压检测ADC检测信道
#define BATTERY_VOLTAGE_DETECTION_CHANNEL                 CH_EXTIN_10

#elif _BOARD_TYPE_ == _V33_A_BOARD_
// 电池电压检测管脚
#define BATTERY_VOLTAGE_DETECTION_PIN                     GPIO_Pin_7
// 控制电压检测管脚
#define BATTERY_VOLTAGE_DETECTION_ENABLE_PIN              GPIO_Pin_13
// 电压检测ADC检测信道
#define BATTERY_VOLTAGE_DETECTION_CHANNEL                 CH_EXTIN_11

#elif _BOARD_TYPE_ == _V33_B_BOARD_
// 电池电压检测管脚
#define BATTERY_VOLTAGE_DETECTION_PIN                     GPIO_Pin_15
// 控制电压检测管脚
#define BATTERY_VOLTAGE_DETECTION_ENABLE_PIN              GPIO_Pin_14
// 电压检测ADC检测信道
#define BATTERY_VOLTAGE_DETECTION_CHANNEL                 CH_EXTIN_5

#elif _BOARD_TYPE_ == _V33_C_BOARD_
// 电池电压检测管脚
#define BATTERY_VOLTAGE_DETECTION_PIN                     GPIO_Pin_7
// 控制电压检测管脚
#define BATTERY_VOLTAGE_DETECTION_ENABLE_PIN              GPIO_Pin_13
// 电压检测ADC检测信道
#define BATTERY_VOLTAGE_DETECTION_CHANNEL                 CH_EXTIN_11
#endif

/* 电池电压额定参数 */
#if _BOARD_TYPE_ == _V31_A_BOARD_
// 最大电池电压 - 1.18V
#define BATTERY_MAXIMUM_VOLTAGE                           1457
// 最低电池电压 - 720mV
#define BATTERT_MIXIMUM_VOLTAGE                           874

#elif _BOARD_TYPE_ == _V32_A_BOARD_
// 最大电池电压 - 1.324V
#define BATTERY_MAXIMUM_VOLTAGE                           1324
// 最低电池电压 - 800mV
#define BATTERT_MIXIMUM_VOLTAGE                           800

#elif _BOARD_TYPE_ == _V33_A_BOARD_
// 最大电池电压 - 1.7V
#define BATTERY_MAXIMUM_VOLTAGE                           1700
// 最低电池电压 - 1.12V
#define BATTERT_MIXIMUM_VOLTAGE                           1120

#elif _BOARD_TYPE_ == _V33_B_BOARD_
// 最大电池电压 - 1.7V
#define BATTERY_MAXIMUM_VOLTAGE                           1700
// 最低电池电压 - 1.12V
#define BATTERT_MIXIMUM_VOLTAGE                           1120

#elif _BOARD_TYPE_ == _V33_C_BOARD_
// 最大电池电压 - 1.7V
#define BATTERY_MAXIMUM_VOLTAGE                           1700
// 最低电池电压 - 1.12V
#define BATTERT_MIXIMUM_VOLTAGE                           1120
#endif

/**
 * @brief 微秒延时
 *
 * @param Us - 延时的时间
 */
extern void BatteryDelayUs(uint16_t Us);

/**
 * @brief 毫秒延时
 *
 * @param Us - 延时的时间
 */
extern void BatteryDelayMs(uint16_t Ms);

/**
 * @brief 使能电池电压检测
 *
 */
extern void BatteryEnableDetection(void);

/**
 * @brief 失能电池电压检测
 *
 */
extern void BatteryDisableDetection(void);

/**
 * @brief 获取输入电压
 *
 * @return uint32_t - 电压系数（毫伏为单位）
 */
extern uint32_t BatteryGetInputVoltage(void);

/**
 * @brief 初始化板载相关功能
 *
 */
extern void BatteryBoardInitialisation(void);

#endif
#endif
